package com.customization.unionpay.market.util;

import com.alibaba.fastjson.JSONObject;
import weaver.integration.logging.Logger;
import weaver.integration.logging.LoggerFactory;

import java.net.URLDecoder;

/**
 * @author sjm
 * @description 营销项目管理平台相关请求
 */
public class MPManagePlatformUtils {
    private static final Logger log = LoggerFactory.getLogger(MPManagePlatformUtils.class);

    /**
     * 申请单金额推送
     *
     * @param msgId            流水号（项目唯一识别码）
     * @param authCode         营销平台活动授权码
     * @param projectNo        项目编号
     * @param contractNo       合同编号
     * @param innerDiscountAmt 内部出资金额
     * @param auditMessage     审批结果（审批不通过-查询申请人+项目编号的查询台账界面）
     * @return
     */
    public static String applicationProcessPush(String msgId, String authCode, String projectNo, String contractNo, String innerDiscountAmt, String auditMessage) throws Exception {
        String sysname = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "sysname");

        String oldValueCode = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "oldValueCode");
        log.info("oldValueCode == >" + oldValueCode);
        String newValueCode = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "newValueCode");
        log.info("newValueCode == >" + newValueCode);
        String zssSysname = new String(sysname.getBytes(oldValueCode), newValueCode);
        log.info("zssSysname:" + zssSysname);
        String propValueChange = URLDecoder.decode(zssSysname, "UTF-8");
        log.info("sysname:" + propValueChange);

        String sysno = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "sysno");
        String secretkey = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "secretkey");
        String url = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "marketingApplicationActionUrl");

        JSONObject params = new JSONObject();
        // 系统名称
        params.put("sysname", propValueChange);
        // 系统标识
        params.put("sysno", sysno);
        // 密钥
        params.put("secretkey", secretkey);
        // 流水号（项目唯一识别码）
        params.put("msgId", msgId);
        // 营销平台活动授权码
        params.put("authCode", authCode);
        // 项目编号
        params.put("projectNo", projectNo);
        // 合同编号
        params.put("contractNO", contractNo);
        // 内部出资金额
        params.put("innerDiscountAmt", innerDiscountAmt);
        // 审批结果（审批不通过-查询申请人+项目编号的查询台账界面）
        params.put("auditMessage", auditMessage);
        log.info("营销项目管理平台-申请单金额推送-请求地址：" + url);
        log.info("营销项目管理平台-申请单金额推送-请求参数：" + params);

        return HttpUtils.doPost(url, null, params, null, null);

    }


    /**
     * 调整单调整金额推送
     *
     * @param msgId        流水号（项目唯一识别码）
     * @param authCode     营销平台活动授权码
     * @param projectNo    项目编号
     * @param adjustMoney  调整金额
     * @param auditMessage 审批结果
     * @return
     */
    public static String applicationChangeProcessPush(String msgId, String authCode, String projectNo, String adjustMoney, String auditMessage) throws Exception {
        String sysname = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "sysname");

        String oldValueCode = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "oldValueCode");
        log.info("oldValueCode == >" + oldValueCode);
        String newValueCode = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "newValueCode");
        log.info("newValueCode == >" + newValueCode);
        String zssSysname = new String(sysname.getBytes(oldValueCode), newValueCode);
        log.info("zssSysname:" + zssSysname);
        String propValueChange = URLDecoder.decode(zssSysname, "UTF-8");
        log.info("sysname:" + propValueChange);

        String sysno = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "sysno");
        String secretkey = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "secretkey");
        String url = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "marketingApplicationChangeActionUrl");

        JSONObject params = new JSONObject();
        // 系统名称
        params.put("sysname", propValueChange);
        // 系统标识
        params.put("sysno", sysno);
        // 密钥
        params.put("secretkey", secretkey);
        // 流水号（项目唯一识别码）
        params.put("msgId", msgId);
        // 营销平台活动授权码
        params.put("authCode", authCode);
        // 项目编号
        params.put("projectNo", projectNo);
        // 调整金额
        params.put("adjustMoney", adjustMoney);
        // 审批结果
        params.put("auditMessage", auditMessage);
        log.info("营销项目管理平台-调整单调整金额推送-请求地址：" + url);
        log.info("营销项目管理平台-调整单调整金额推送-请求参数：" + params);

        return HttpUtils.doPost(url, null, params, null, null);

    }

    /**
     * 推送创新结算系统支付状态到营销项目管理平台
     *
     * @param msgId        流水号（项目唯一识别码）
     * @param auditMessage 审批结果
     * @return
     */
    public static String createInnovativePush(String msgId, String auditMessage) throws Exception {
        String sysname = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "sysname");

        String oldValueCode = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "oldValueCode");
        log.info("oldValueCode == >" + oldValueCode);
        String newValueCode = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "newValueCode");
        log.info("newValueCode == >" + newValueCode);
        String zssSysname = new String(sysname.getBytes(oldValueCode), newValueCode);
        log.info("zssSysname:" + zssSysname);
        String propValueChange = URLDecoder.decode(zssSysname, "UTF-8");
        log.info("sysname:" + propValueChange);

        String sysno = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "sysno");
        String secretkey = com.customization.unionpay.market.util.PropUtils.BB_LOG.getPropValue("marketSubject", "secretkey");
        String url = PropUtils.BB_LOG.getPropValue("marketSubject", "pushPayStateUrl");

        JSONObject params = new JSONObject();
        // 系统名称
        params.put("sysname", propValueChange);
        // 系统标识
        params.put("sysno", sysno);
        // 密钥
        params.put("secretkey", secretkey);
        // 流水号（项目唯一识别码）
        params.put("msgId", msgId);
        // 审批结果
        params.put("auditMessage", auditMessage);
        log.info("营销项目管理平台-推送创新结算系统支付状态-请求地址：" + url);
        log.info("营销项目管理平台-推送创新结算系统支付状态-请求参数：" + params);

        return HttpUtils.doPost(url, null, params, null, null);

    }
}
